package com.yt.product.models.dto;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import com.yt.common.dto.BaseDTO;

/**
 * 保险产品表DTO
 *
 * @author yuanxinwen
 * @Date 2025-10-30 16:12:52
 */
@Data
@ApiModel(value="保险产品表对象", description="保险产品表对象")
public class InsuranceProductDTO extends BaseDTO implements Serializable {

    // 重新声明id字段并标记为不存在，解决@TableId冲突问题
    @TableField(exist = false)
    private Long id;
    
    // 排除BaseDTO中的revision字段，因为数据库表中没有对应列
    @TableField(exist = false)
    private Integer revision;
    
    // 排除BaseDTO中的createTime字段，因为数据库表中使用不同的列名
    @TableField(exist = false)
    private Date createTime;
    
    // 排除BaseDTO中的updateTime字段，因为数据库表中使用不同的列名
    @TableField(exist = false)
    private Date updateTime;

    @ApiModelProperty(value = "保险产品唯一ID")
    private Integer productId;
    
    @ApiModelProperty(value = "保险产品名称（如少儿重疾险、成人医疗险）")
    private String productName;
    
    @ApiModelProperty(value = "保险类型ID（关联sys_attribute表，attr_name=保险类型）")
    private Integer typeAttrId;
    
    @ApiModelProperty(value = "最低保险金额")
    private BigDecimal minAmount;
    
    @ApiModelProperty(value = "最高保险金额")
    private BigDecimal maxAmount;
    
    @ApiModelProperty(value = "最低投保期限（单位：年）")
    private Integer minTerm;
    
    @ApiModelProperty(value = "最高投保期限（单位：年）")
    private Integer maxTerm;
    
    @ApiModelProperty(value = "默认赔付比例（如0.8=80%）")
    private BigDecimal payRatio;
    
    @ApiModelProperty(value = "保险产品说明（保障范围、理赔条件等）")
    private String description;
    
    @ApiModelProperty(value = "产品状态（0=下架，1=上架）")
    private Integer status;
    
    @ApiModelProperty(value = "逻辑删除（0=正常，1=删除）")
    private Integer isDelete;
    
    @ApiModelProperty(value = "创建时间")
    private Date createTimeDB;
    
    @ApiModelProperty(value = "更新时间")
    private Date updateTimeDB;
}